home *** CD-ROM | disk | FTP | other *** search
/ Aminet 8 / Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso / Aminet / dev / amos / AMOS_0795.lzh / AMOSLIST / 000115_amos-request@svcs1.digex.net_Sat Jul 22 16:23:16 1995.msg < prev    next >
Internet Message Format  |  1995-08-04  |  5KB

  1. Received: from svcs1.digex.net (svcs1.digex.net [204.91.197.224]) by mail1.access.digex.net (8.6.12/8.6.12) with ESMTP id QAA20635;  for  ; Sat, 22 Jul 1995 16:23:13 -0400
  2. Received: (from daemon@localhost) by svcs1.digex.net (8.6.12/8.6.12) id OAA09696 for amos-out; Sat, 22 Jul 1995 14:15:31 -0400
  3. Received: from mail1.access.digex.net (mail1.access.digex.net [205.197.247.2]) by svcs1.digex.net (8.6.12/8.6.12) with ESMTP id OAA09693 for <amos-list@svcs1.digex.net>; Sat, 22 Jul 1995 14:15:30 -0400
  4. Received: from nyquist.ee.ualberta.ca (sikorsky@nyquist.ee.ualberta.ca [129.128.16.198]) by mail1.access.digex.net (8.6.12/8.6.12) with ESMTP id OAA14084;  for <amos-list@access.digex.net> ; Sat, 22 Jul 1995 14:15:28 -0400
  5. Received: by nyquist.ee.ualberta.ca
  6.     (1.37.109.16/15.6) id AA045596927; Sat, 22 Jul 1995 12:15:27 -0600
  7. Date: Sat, 22 Jul 1995 12:15:27 -0600 (MDT)
  8. From: Mike Sikorsky <sikorsky@ee.ualberta.ca>
  9. To: Amos <amos-list@access.digex.net>
  10. Subject: Re: Collision Detection
  11. In-Reply-To: <199507210809.SAA01035@yallara.cs.rmit.edu.au>
  12. Message-Id: <Pine.HPP.3.91.950722114818.12103A-100000@nyquist.ee.ualberta.ca>
  13. Mime-Version: 1.0
  14. Content-Type: TEXT/PLAIN; charset=US-ASCII
  15. Status: RO
  16. X-Status: 
  17.  
  18. On Fri, 21 Jul 1995, Clarence Bakirtzidis wrote:
  19.  
  20. >     Hi there AMOS users,
  21.  
  22.    hello!
  23. >     This is my first message on this mailing list.  I am working on a
  24. > game in AMOS and I am using a collision table method for the main character
  25. > to see where he can walk in a screen made up of 16x16 tiles.  It is similar
  26. > to the method described in this list by someone else recently.
  27. > I am using normal collision detection i.e. bob col etc.
  28. > for collisions between the main character and other baddies and weapons, but
  29. > if the main character stands behind a block, his head protrudes from behind
  30. > the block and he can still get hit.  How can I ignore collisions to the top
  31. > part of the bob i.e. his head? Bob col detects a collision to any part of the
  32. > bob, so is it possible to detect collisions on a certain area of a bob?
  33. >     
  34.  
  35.     yes... what you have to do is supply a different collision mask
  36.     for your main character... Amos will automatically make your
  37.     collison mask for you with it's Make Mask command.. The Mask
  38.     is as wide and as tall as your object, but is only 1 plane deep.
  39.  
  40.     This Mask contains a ZERO everywhere there was Colour 0 in your
  41.     object and a ONE everywhere else.
  42.  
  43.     This Mask is used like I mentioned before.. basically the mask
  44.     of 2 different objects are AND'ed together and if the result
  45.     is NOT ZERO there was a collision.
  46.  
  47.     So to turn off collision detection for an object all you have to 
  48.     do is Make its Mask all zero's. You can also of course just
  49.     turn off or part's by setting ZERO's/ONE's as you choose.
  50.  
  51.     The probelm with this method is that Amos also uses the same
  52.     mask to "draw" you object.. so if the Mask was all zero's
  53.     nothing would be rendered... there are probably a number
  54.     methods to get around this.. one simple way is to have
  55.     a "phantom" object that tracks your main character, this
  56.     phantom object is what could possibly be used for the
  57.     swapping in and out of the Mask's... I wrote a procedure
  58.     a couple of year's ago (I think :) ) that will create a
  59.     Mask for any colour and explains how.. it is in the
  60.     Procedure Library under MAKEMASK[]... but it was coded
  61.     pretty badly.. I didn't know how then to use the blitter
  62.     directly.. and I didn't know how to get Amos's Rastport
  63.     then to use the OS calls... so I had to code it in a
  64.     roudabout way.. 
  65.  
  66.     _MASK_LENGTH = Leek( Sprite Base( - object ) ) - 4
  67.     _MASK_ADDR   = Sprite Base( - object ) + 4
  68.  
  69.     ' note: could also use Icon Base() 
  70.  
  71.     Knowing the length and addr's you can know 'Copy' data
  72.     into the mask or even fill it.. ie. 
  73.     
  74.         Fill _MASK_ADDR to _MASK_ADDR+_MASK_LENGTH,0
  75.  
  76.     This would clear out the mask.. 
  77.  
  78.     If you had Mask's stored somewhere (in CHIP MEM) then you
  79.     could probably Poke at the sprite base to tell it your
  80.     mask's address.. this way you would only ever have to
  81.     swap a few pointers instead of whole masks but I never
  82.     tried this.. 
  83.  
  84.                         mike
  85.             
  86. >                         Clarence B.
  87. > -- 
  88. > +----------------------+-------------------------------------------------+
  89. > | Clarence Bakirtzidis | Email ->  s9506574@minyos.xx.rmit.edu.au        |
  90. > | RMIT Uni, Melbourne  |   WWW -> http://minyos.xx.rmit.edu.au/~s9506574 |
  91. > +----------------------+-------------------------------------------------+